package view.recados;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

import model.Estado_Recado;
import model.Recado;
import model.Usuario;
import model.comunication.IRecado;
import model.comunication.IUsuario;
import view.confirmaciones.RecadoEnviado;
import java.awt.Dialog.ModalExclusionType;

public class CrearRecado {

	private JFrame frame;
	private JTextField textFecha;
	private JTextArea textMensaje;
	private JTextField textAsunto;
	private IRecado cmmRecado = IRecado.getInstance();
	private IUsuario cmmUsuario = IUsuario.getInstance();
	private JComboBox<String> comboDestinatario;
	private int idEmisor;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CrearRecado window = new CrearRecado(1);
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public CrearRecado(int i) {
		idEmisor = i;
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		cmmUsuario = IUsuario.getInstance();
		frame = new JFrame();
		frame.setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);
		frame.setResizable(false);
		frame.setVisible(true);
		frame.setBounds(100, 100, 450, 368);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		frame.getContentPane().setLayout(null);

		JLabel lblMensaje = new JLabel("Escriba su mensaje");
		lblMensaje.setFont(new Font("Tahoma", Font.PLAIN, 15));
		lblMensaje.setBounds(10, 11, 231, 26);
		frame.getContentPane().add(lblMensaje);

		JButton btnCancelar = new JButton("Cancelar");
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				frame.dispose();
			}
		});
		btnCancelar.setBounds(335, 309, 89, 23);
		frame.getContentPane().add(btnCancelar);

		JLabel lblFecha = new JLabel("Fecha:");
		lblFecha.setBounds(251, 19, 46, 14);
		frame.getContentPane().add(lblFecha);

		textFecha = new JTextField();
		textFecha.setEditable(false);
		textFecha.setBounds(303, 16, 132, 20);
		frame.getContentPane().add(textFecha);
		textFecha.setColumns(10);
		SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm");
		String fechaRecado = format.format(Calendar.getInstance().getTime());
		
		textFecha.setText(fechaRecado);

		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPane.setBounds(10, 158, 414, 115);
		frame.getContentPane().add(scrollPane);

		textMensaje = new JTextArea();
		scrollPane.setViewportView(textMensaje);
		textMensaje.setLineWrap(true);
		textMensaje.setWrapStyleWord(true);

		textAsunto = new JTextField();
		textAsunto.setBounds(10, 125, 414, 20);
		frame.getContentPane().add(textAsunto);
		textAsunto.setColumns(10);

		JLabel lblAsunto = new JLabel("Asunto:");
		lblAsunto.setBounds(10, 100, 46, 14);
		frame.getContentPane().add(lblAsunto);

		JLabel lblDestinatario = new JLabel("Destinatario:");
		lblDestinatario.setBounds(10, 46, 109, 14);
		frame.getContentPane().add(lblDestinatario);

		comboDestinatario = new JComboBox<String>();
		comboDestinatario.setBounds(10, 69, 414, 20);
		frame.getContentPane().add(comboDestinatario);
		List<Usuario> usuarios = cmmUsuario.getAllUsuario();
		for (Usuario usuario : usuarios) {
			comboDestinatario.addItem(usuario.getName());
		}

		JButton btnEnviar = new JButton("Enviar");
		btnEnviar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Usuario usuario = cmmUsuario.getUsuario(comboDestinatario.getSelectedItem().toString()).get(0);
				Recado recado = cmmRecado.getRecado(cmmUsuario.getUsuario(idEmisor), usuario, Estado_Recado.No_Leido, textMensaje.getText(), Calendar.getInstance(), textAsunto.getText(), "no", "no");
				cmmRecado.addRecado(recado);
				frame.dispose();
				@SuppressWarnings("unused")
				RecadoEnviado enviado = new RecadoEnviado();
			}
		});
		btnEnviar.setBounds(236, 309, 89, 23);
		frame.getContentPane().add(btnEnviar);
	}

	public void setAsunto(String string) {
		textAsunto.setText(string);
	}

	public void setDestinatario(String destinatario) {
		int contador = 0;
		for (int i = 0; i < comboDestinatario.getItemCount(); i++) {
			if (comboDestinatario.getItemAt(i).equals(destinatario)) {
				contador = i;
			}
		}
		comboDestinatario.setSelectedIndex(contador);
		comboDestinatario.setEnabled(false);
	}

	public void setMensaje(String string) {
		textMensaje.setText(string);
	}
}
